BOOTPARTユーティリティの使い方
BootPartユーティリティはhttp://www.winimage.com/bootpart.htmから入手可能なフリーソフトで、見た目DOSコマンドのようだが、れっきとしたWin32コンソールアプリケーションだ。WindowsNT/2000のブートセクターの修復の他、NTLDRを使ったマルチブートに関し、様々なことが可能な非常に便利なユーティリティである。ざっと機能を以下に挙げる。
動作環境は以下のようになる。
WindowsNT/2000の「コマンドプロンプト」で動いて、Windows9xの「DOS窓」でできないのが不思議だが、まあそういう作りなのだろう。コマンドの使い方は「bootpart /?」と実行することで、簡単なものだが表示される。
[BootPartの使い方の表示]
C:\BOOTPART>bootpart /? Boot Partition 2.20 for WinNT (c) 1995-98 G. Vollant (info@winimage.com) WEB : http://www.winimage.com and http://www.winimage.com/bootpart.htm Add partition in the Windows NT Multi-boot loader Usage : When running under Windows NT or MS-Dos BOOTPART List all partition, with number BOOTPART <part_number> <filename> [<name_of_system>] where : part_number : a number of a partition (or A: for floppy) filename : the file name of the bootfile to create name_of_system : the name to be added in the BOOT.INI Create a boot file for the partition, and if name_of_system is specified, register it in the BOOT.INI You can also replace <part_number> by DOS622 or WIN95 to them. BOOTPART LIST List entry in BOOT.INI (you can remove them after with BOOTPART) Under MS-Dos (MS-Dos 6.22 or the "MS-Dos 7.0" from Windows 95) only: BOOTPART <part_type> BOOT:C: where <part_type> is DOS622, WIN95 or WINNT, rewrite the boot sector of C: for boot under MS-Dos 6.22, Win95 or the NT Boot loader BOOTPART REWRITEROOT:C: Put the IO.SYS and MSDOS.SYS file from MS-Dos 6.22 at the beginning of the boot sector C:\BOOTPART> |
内容はそれぞれ細かく説明する。
[実行シンタックス]
> BOOTPART <パーティションタイプ> BOOT:C:
BootPartの基本機能として、ブートセクターの修復がある。現在のブートパーティション(Cドライブ)のブートセクターをWindowsNT/2000のNT-IPLのものにしたり、逆にWindows9x/DOSのDOS-IPLのものにしたりできる。このコマンドはWindowsNT/2000上では動作せず、MS-DOS上でしか動作しない。またあくまで、修復するのは現在のブートパーティション(Cドライブ)である。任意のパーティションのブートセクターの修復はできない。
NT-IPLにするのはNTLDRによるマルチブート環境がWindows9xのインストールにより破壊された場合に便利だ。またDOS-IPLにするのはマルチブート環境を純粋なWindows9xの単独環境に戻すときに使う。コマンドの実行は基本的にブートパーティション(Cドライブ)をカレントディレクトリとして実行してほしい。
パーティションタイプにはWINNT、DOS622、WIN95、WIN95OSR2、WIN98の5種類が指定できる。
まず、NT-IPLのものにする場合は以下のようにパーティションタイプに「WINNT」を指定してコマンドを打つ。
[現在のブートパーティションのブートセクターをNT-IPLにする]
C:\> bootpart winnt boot:c: |
以上で、現在のブートパーティションのブートセクターがNT-IPLのものになる。次にDOS-IPLにする場合である。
[ブートセクターをDOS-IPLにする]
C:\> bootpart win95 boot:c: |
パーティションタイプ「win95」の部分は「win95osr2」や「win98」とすることもできる。これによる違いは特に発見できなかったが、マルチブートのOSがWindows95 OSR2やWindows98の場合は一応それぞれ「win95osr2」や「win98」と指定した方がいいだろう。
また同じDOS-IPLでもMS-DOS 6.22では内容が違うので、もしMS-DOS6.22のものにしたい場合は以下のように実行してほしい。
[ブートセクターをMS-DOS6.2のDOS-IPLにする]
C:\> bootpart dos622 boot:c: |
いずれも、大文字小文字はどちらでも構わない。
[実行シンタックス]
> BOOTPART <パーティションタイプ> <ブートセクターファイル名> [<boot.iniエントリ名>]
これはなかなかユニークな機能だ。Windows9xがインストールされている環境に後からWindowsNT/2000をインストールすると現在のブートセクターが退避され、bootsect.dosというファイルに作成されるということは何度も述べてきた。これは単に現在ブートパーティション(Cドライブ)のブートセクターをイメージ化して、それをそのままファイル化したに過ぎない。
しかしBootPartのこの機能は現在のブートパーティション(Cドライブ)のブートセクターのBPB(BIOSパラメータブロック)とそれに合ったIPLを組み合わせて、ブートセクターファイルを新たに生成するということができる。つまり単なる現存するブートセクターのイメージ化ではない。
以下のようなコマンドを打つことによって、現在のブートセクターのBPB(これはブートパーティションの情報を含んでいます)とWindows95用のDOS-IPLを組み合わせたブートセクターファイルを「bootsect.95」という名称で作成することができる。
[ブートセクターファイルの作成]
C:\BOOTPART> bootpart win95 bootsect.95 |
第1パラメータのパーティションタイプは「win95」の他、ブートセクターの修復の項でも述べた、「win98」または「win95osr2」でもOKである。同様に違いはよく分かりませんが、それぞれのOSに合ったものにしておいた方が無難だろう。またやはり同様に「DOS622」とすることでMS-DOS6.22用のブートセクターファイルも作成可能だ。ただし「winnt」は指定できない。理由は後述する。
このコマンドはWindowsNT/2000上でも実行可能である。やはり必ずCドライブをカレントディレクトリとして実行してほしい。ただしドライブ直下である必要はない。
またこの機能ではブートセクターファイルを作るだけでなく、このファイルを起動エントリとして、ブートエントリをBoot.iniファイルに追加することができる。以下のようにコマンドの最後にエントリ名を追加する。
[ブートセクターファイルの作成とboot.iniエントリの追加]
C:\BOOTPART> bootpart win98 bootsect.98 Windows 98 SE |
エントリ名はスペースを含むことも可能である。その場合特に全体をダブルクォーテーションで囲む必要もない。このようにするとbootset.98というファイルが作成されると共に以下のようにboot.iniにエントリが追加される。
[boot.iniに追加されたエントリ]
[boot loader] timeout=30 default=multi(0)disk(0)rdisk(0)partition(2)\WINNT [operating systems] multi(0)disk(0)rdisk(0)partition(1)\WINNT="Windows NT Workstation Version 4.00" multi(0)disk(0)rdisk(0)partition(1)\WINNT="Windows NT Workstation Version 4.00 [VGA mode]" /basevideo /sos C:\BOOTPART\Bootsect.98 ="Windows 98 SE" |
このように、マルチブート環境の構築が比較的簡単に行うことができる訳である。
因みに、この機能は現在のブートパーティションのBPBとDOS-IPLを組み合わせたブートセクターファイルしか生成できない。たとえば任意のパーティションのBPBと組み合わせたり、またNT-IPLと組み合わせるといったことはできない。これはNTLDRによるマルチブートにとって、このようなブートセクターファイルは必要ないからだ。この理由は私のページをじっくり読んでいただければ、自ずと理解できることだと思う。
[実行シンタックス]
> BOOTPART {<パーティション番号> | A: } <ブートファイル名> [<boot.iniエントリ名>]
この機能は通常NTLDRが不可能な任意のパーティションをチェーンロードすることを可能にするものである。「パーティション番号」は以下のように何もパラメータを指定しないで、BOOTPARTコマンドを実行することにより参照する。そうすると以下のようにパーティション情報が表示される。
[パーティションの表示]
C:\BOOTPART>bootpart Boot Partition 2.20 for WinNT (c) 1995-98 G. Vollant (info@winimage.com) WEB : http://www.winimage.com and http://www.winimage.com/bootpart.htm Add partition in the Windows NT Multi-boot loader Run "bootpart /?" for more information 0 : C:* type=b (Win95 Fat32), size = 1670728 KB 1 : C: type=f (Win95 XInt 13 extended), size = 16265812 KB 2 : C: type=b (Win95 Fat32), size = 1309266 KB 3 : C: type=5 (Extended), size = 1429785 KB 4 : C: type=b (Win95 Fat32), size = 1429753 KB 5 : C: type=5 (Extended), size = 11406150 KB 6 : C: type=b (Win95 Fat32), size = 11406118 KB 7 : C: type=5 (Extended), size = 2000092 KB 8 : C: type=83 (Linux native), size = 2000061 KB 9 : C: type=5 (Extended), size = 120487 KB 10 : C: type=82 (Linux swap), size = 120456 KB 11 : C: type=c (Win95 Fat32 LBA), size = 2000092 KB C:\BOOTPART> |
たとえば、この中で8番のLinuxの起動エントリを作りたい場合、次のようなシンタックスのコマンドを実行する。
> BOOTPART <パーティション番号> <ブートファイル名> [<boot.iniエントリ名>]
パーティション番号は先に表示したものの各行(パーティション)の先頭の番号だ。ブートファイル名は起動したいパーティションのブートセクターを起動するIPLが含まれるファイルの名称になる。任意の名称を指定して構わない。boot.iniエントリ名はboot.iniファイルのエントリになるものである。最後のboot.iniエントリ名は省略可能だ。省略した場合はboot.iniにエントリを追加せず、ブートファイルのみ作成する。
[ブートファイルの作成とboot.iniへのエントリの追加]
C:\BOOTPART>bootpart 8 bootfile.lnx Turbo Linux 6.0 |
上記例ではbootsect.lnxというブートファイルがカレントディレクトリに作成され、そのファイルへのエントリがboot.iniファイルに追加される。boot.iniファイルは以下のようになっただろう。
[Linuxのエントリが追加されたboot.iniの内容]
[boot loader] timeout=30 default=multi(0)disk(0)rdisk(0)partition(1)\WINNT [operating systems] multi(0)disk(0)rdisk(0)partition(1)\WINNT="Windows NT Workstation Version 4.00" multi(0)disk(0)rdisk(0)partition(1)\WINNT="Windows NT Workstation Version 4.00 [VGA mode]" /basevideo /sos C:\BOOTPART\bootfile.lnx="Turbo Linux 6.0" |
起動画面は以下のようなイメージになったはずである。
[NTLDRによるOS選択画面(+Windows95+Linux)]
OS Loader V4.00 オペレーティング システムの選択
↑ キーと ↓ キーを使って、起動するオペレーティング システムを選択し、 Enter キーを押してください。 システムが自動的に起動するまで: 30 |
ところでこの機能において、BootPartが作成するブートファイル(例ではC:\BOOTPART\bootfile.lnx)は指定パーティションのブートセクターをファイル化したものではない。このファイルは指定パーティションのブートセクターをロードすることだけを行う、一種のブートローダである。
これはNTLDRはカレントドライブのファイルしか読めないため、特定のパーティションのブートセクターを直接読み込むことができないので、このブートファイルを仲立ちにすることでそれを可能にするという機能なのだ。
つまり、ブートシーケンスはNTLDRはカレントドライブにある、このブートファイルをロードする。このブートファイルは一種のブートローダなのでロードされ実行されると特定のパーティションのブートセクターをロード、実行という作業を行う。
さて、この機能で任意のパーティションが起動できる訳だが、この応用としてここでやはりNTLDRでは出来なかったフロッピーディスクからのブートのメニューを追加することができる。次のシンタックスで可能である。
> BOOTPART A: <ブートファイル名> [<boot.iniエントリ名>]
やはり、フロッピーブートを司るブートファイルが生成され、NTLDRがそれをロードするというブートシーケンスになる。
[フロッピーブートのエントリの作成]
C:\BOOTPART>bootpart a: bootfile.fd Diskette |
これで、NTLDRからフロッピーブートすることが可能になる。
Boot.iniに対するBootPartの機能として更にその内容を表示したり、エントリを削除することも可能だ。Windows2000/NT上で操作している場合はエクスプローラから簡単に操作できるが、それでもいちいちファイル属性を変更したりせねばならない。また起動ディスクからおこなっている場合はEDITコマンドなどは若干不便なので、このような機能があると楽だろう。
表示は以下のようなシンタックスである。
> BOOTPART LIST
[パーティションの表示]
C:\BOOTPART>bootpart list Boot Partition 2.20 for WinNT (c) 1995-98 G. Vollant (info@winimage.com) WEB : http://www.winimage.com and http://www.winimage.com/bootpart.htm Add partition in the Windows NT Multi-boot loader List entry in BOOT.INI 0 : multi(0)disk(0)rdisk(0)partition(2)\WINNT="Microsoft Windows 2000 Server" /fastdetect 1 : multi(0)disk(0)rdisk(0)partition(1)\WINNT="Microsoft Windows 2000 Professional" /fastdetect 2 : C:\="Windows 98" 3 : C:\BOOTPART\bootsect.fd="Diskette" 4 : C:\BOOTPART\bootsect.lnx="Turbo Linux 6.0" By runnning "bootpart REMOVE <number>" where number is an entry number, you can remove the entry from C:\BOOT.INI C:\BOOTPART> |
更にこの中から特定のエントリを消したい場合は以下のシンタックスで削除できる。
> BOOTPART REMOVE <エントリ番号>
エントリ番号はリストの各行の先頭の番号となる。
今となってはあまり必要性のある機能ではないが、MS-DOS6.22以前ではIO.SYSとMSDOS.SYSはルートディレクトリの先頭のエントリとして存在していなければブートすることはできない。
エクスプローラなどでファイルをコピーしたりしても、そのファイルのディレクトリエントリはどこになるか保証されないので、通常は起動できない位置にIO.SYSやMSDOS.SYSが配置されてしまう場合がある。このような時に行うコマンドである。
> BOOTPART REWRITEROOT:C:
上記のように実行するだけである。
尚、Windows95以降の起動ディスクのMS-DOSは正確にはMS-DOS7.xなので、IO.SYSとMSDOS.SYSがどのディレクトリエントリにあっても問題なくDOS-IPLが探して起動できるようになっているため、このような作業は必要ない。